iT邦幫忙

2022 iThome 鐵人賽

DAY 29
0
AI & Data

語言學與NLP系列 第 29

Day 29 NLP 的重要模型 —— BERT 的時代 中篇

  • 分享至 

  • xImage
  •  

今天要延續昨天的內容,繼續了解 BERT 是什麼,今天會著重在 BERT Pre-training 的過程。為什麼我們要了解 BERT Pre-training 過程呢?Google 不是都訓練好了,我們直接取用就可以麼嗎?

其實就是因為我們沒有資源自己訓練一個 BERT 才更需要了解喔!因為在進行 project、比賽、研究等等任務時,我們拿 Google 預訓練的 BERT 來用,這時候必須關注的重點就是如何讓我們的 Data 與預訓練模型完美結合,要微調哪些地方才能有更好的結果。那麼,廢話不多說,我們直接進入主題吧!

BERT 文本預處理(Text pre-processing)

bert

圖片來源

根據上圖,BERT 背後的開發人員添加了一組特定的規則來表示模型的輸入文字。BERT 的輸入必定是一個完整的文本序列,進而輸出此文本序列中每個詞語對應的多維向量。圖中,最上層粉色區塊就是文本的輸入(預處理後的 raw data),每一項輸入都會經過底下三層 BERT 需要的 3 個 embeddings(這邊屬於 BERT 模型的一部份,預訓練時隨機初始化,並隨著模型的訓練而得到改善。我們在 Fine tuning 時引用 BERT 時是不需要自己手動輸入的)。

接下來,我們由圖片的下方至上方來解釋 Position Embeddings, Segment Embeddings 和 Token Embeddings 是什麼。

  1. Position Embeddings(位置嵌入):BERT 學習並使用位置嵌入來表示單詞在句子中的位置。添加這些功能是為了補足 Transformer 的限制。與 LSTM 這種 RNN 不同,BERT 是同時輸入做「平行計算」,無法自然獲取順序或序列資訊,故需要此「特殊手段」加強。

  2. Segment Embeddings(分段嵌入):BERT 可以將句子以成對的方式作為任務的輸入(如問答句型)。每一段文字都有自己所屬獨特的嵌入,以利模型區分,第一個句子的每一個詞對應相同的 Segment Embedding,第二句的每一個詞對應第二種(相同的) Segment embedding。 在上面的例子中,所有標記為 EA 的字都屬於句子 A(my dog is cute),EB 亦然。

  3. Token Embeddings(詞嵌入):最淺層嵌入,只代表詞語的淺層特徵,沒有上下文脈絡。由 WordPiece 標記詞彙表中所標記的詞彙學習而來。

最終,BERT 其 input 是統整相應的 Token、Segment 和 Position Embeddings 來建構的。

另外補充一下 BERT 的 tags:

  • [CLS]:用於每個序列之首,經過 BERT 得到的的表徵向量 C 可以用於後續的分類任務,Fine-tuning 階段時用於聚集所有分類資訊。
  • [SEP]:用於分開兩個句子的輸入,例如輸入句子 A 和 B,要在句子 A 與B 後面新增 [SEP] 標誌。
  • [PAD]:佔位符,和程式設計有關,BERT 預訓練 model 的介面 API 只能接受長度相同的 input,所以用[PAD] 將長度不足的短句補齊,長句直接做截斷,讓所有句子長度一致。
  • [UNK]:取代用 token,用以取代未出現在 BERT 字典裡的字。
  • [MASK]:未知遮罩,在預訓練階段的克漏字任務中會用到。

BERT Pre-training

在這個階段 BERT 以兩個任務來做訓練:

遮罩語言模型 (Masked Language Modeling, MLM)
下一句子預測 (Next Sentence Prediction, NSP)

Masked Language Modeling

試想現在有一句 input 「我喜歡閱讀 iT 邦幫忙上的鐵人賽文章」。我們想訓練一個語言模型來預測字詞時,我們不需要單純嘗試訓練它預測序列中的下一個單詞,而是建立一個模型,從「序列本身」去預測缺失的單詞。因此,依照這個思路,我們將「iT 邦幫忙」替換為 [MASK]:「我喜歡閱讀 [MASK] 上的鐵人賽文章」,再去對模型進行訓練,使其能够預測「iT 邦幫忙」這個缺失的詞。其實簡單來說,就是給 BERT 克漏字測驗。

BERT 的開發者還提出了一些改進該方法的注意事項:

  1. 為了防止模型過於關注被掩蓋的特定位置或標記,研究人員會隨機遮罩了 15% 的單詞。

  2. 被遮罩起來的字並不會永久地被 [MASK] 替換,在 Fine-tuning 期間,[MASK] 標記不會出現。

詳細規則如下:

  • 80% 的時間,單詞被替換為[MASK]
  • 10% 的時間將單詞替換為隨機單詞
  • 10% 的時間單詞保持不變

Next Sentence Prediction

遮罩語言模型(MLM)學習理解單詞之間的關係。 但是,文本中句子與句子之間的關聯也非常重要,故針對理解句子之間關係的任務,BERT 接受的是下一句子預測(NSP)的訓練,問答系統就是很適合詮釋此種任務的例子。

下一句子預測之任務很簡單,首先給定兩句話—— A 和 B,然後讓 BERT 去判斷 B 是語料庫中 A 之後的下一句子,還是語料庫中一句隨機句子。這其實就是一項二元分類任務。

如同 MLM 任務,BERT 開發者也在此任務添加了一些規定,假設我們有一個 100,000 句的 data set。由於是二元分類任務,將有 50,000 句作為 training data 或其相應之成對句子:

  • 50% 的成對句子,第二句就是第一句的下一句。
  • 其餘50%的配對,第二句將是語料庫中的隨機句子。
  • 第一種將其標記為 "IsNext",第二種為 "NotNext"

結合了遮罩語言模型和下一句子預測訓練的 BERT 就是一個不專門為某一個特定任務所訓練而生的「任務無偏」(task-agnostic)模型。

今天 BERT 的介紹就到這邊,明天見~


上一篇
Day 28 NLP 的重要模型 —— BERT 的時代 前篇
下一篇
Day 30 NLP 的重要模型 —— BERT 的時代 後篇 (實作推薦+完賽感言)
系列文
語言學與NLP30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言